﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

using Enterprise.Model.Module;
using Enterprise.Service.Module;
namespace Enterprise.Test
{
    /// <summary>
    /// TModuleService 的摘要说明
    /// </summary>
    [TestClass]
    public class TModuleService
    {
        public TModuleService()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }

        private TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文，该上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试特性
        //
        // 编写测试时，可以使用以下附加特性:
        //
        // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
        // [ClassInitialize()]
        // public static void MyClassInitialize(TestContext testContext) { }
        //
        // 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
        // [ClassCleanup()]
        // public static void MyClassCleanup() { }
        //
        // 在运行每个测试之前，使用 TestInitialize 来运行代码
        // [TestInitialize()]
        // public void MyTestInitialize() { }
        //
        // 在每个测试运行完之后，使用 TestCleanup 来运行代码
        // [TestCleanup()]
        // public void MyTestCleanup() { }
        //
        #endregion

        /// <summary>
        /// 系统模块操作 新增系统模块测试
        /// </summary>
        [TestMethod]
        public void TestModuleInsert()
        {
            string s=Guid.NewGuid().ToString().Substring(0,5);
            ModuleEntity entity = new ModuleEntity();
            entity.DB_Option_Action = "Insert";
            entity.MCODE = "S01";
            entity.MNAME = "测试模块"+s;
            entity.MPARENTID = 0;
            entity.MROOTID = 0;
            entity.MTARGET = "_blank";
            entity.MURL = "";
            entity.PBGROUP = "";
            entity.MIMAGE = "";
            entity.MDELETE = "0";
            ModuleService ser = new ModuleService();
            ser.ModuleExecute(entity);
            var q = ser.ModuleList().Where(p => p.MNAME == entity.MNAME).FirstOrDefault();
            if (q != null)
            {
                Assert.AreEqual(entity.MNAME, q.MNAME);
            }
        }

        /// <summary>
        /// 系统模块操作 更新系统模块测试
        /// </summary>
        [TestMethod]
        public void TestModuleUpdate()
        {
            ModuleService ser = new ModuleService();
            var entity = ser.ModuleList().FirstOrDefault();
            if (entity != null)
            {
                entity.DB_Option_Action = "Update";
                entity.MCODE = "S01";
                entity.MNAME = "测试模块" + "更新测试";
                entity.MPARENTID = 0;
                entity.MROOTID = 0;
                entity.MTARGET = "_blank";
                entity.MURL = "";
                entity.PBGROUP = "";
                entity.MIMAGE = "";
                entity.MDELETE = "0";
                ser.ModuleExecute(entity);

                var q = ser.ModuleList().Where(p => p.MODULEID == entity.MODULEID).FirstOrDefault();
                if (q != null)
                {
                    Assert.AreEqual(entity.MNAME, q.MNAME);
                }
            }
        }

        /// <summary>
        /// 系统模块操作 删除系统模块测试
        /// </summary>
        [TestMethod]
        public void TestModuleDelete()
        {
            ModuleService ser = new ModuleService();
            var entity = ser.ModuleList().FirstOrDefault();
            if (entity != null)
            {
                entity.DB_Option_Action = "Delete";
                ser.ModuleExecute(entity);

                bool rbool = false;
                var q = ser.ModuleDisp(entity.MODULEID);
                if (q != null)
                {
                    rbool = true;
                }
                Assert.AreEqual(false, rbool);
            }
        }

    }
}
